package Negocio;

import java.util.Date;
import javax.persistence.*;
import DTO.AgenteOficialVO;
import DTO.MantenimientoKilometrajeVO;
import DTO.TallerGeneralVO;
import DTO.TallerOficialVO;
import SRV.ProveedorSRV;

@Entity
@DiscriminatorValue("porKM")
public class MantenimientoKilometraje extends TareaMantenimiento
{
	@Column(name="kilometraje")
	private int kilometrajeMantenimiento;

	public MantenimientoKilometraje(int kilometrajeMantenimiento, Date fechaTarea, String detalle, Proveedor proveedor) 
	{
		super(fechaTarea, detalle, proveedor);
		this.kilometrajeMantenimiento = kilometrajeMantenimiento;
	}

	public MantenimientoKilometraje() {
		super();}
	
	public static MantenimientoKilometraje toBusiness(MantenimientoKilometrajeVO tarea){
	    MantenimientoKilometraje devuelto = new MantenimientoKilometraje();
	    
	    AgenteOficial ag = new AgenteOficial();
	    TallerGeneral tg = new TallerGeneral();
	    TallerOficial to = new TallerOficial();
	    AgenteOficialVO agVO = null; 
	    TallerGeneralVO tgVO = null;
	    TallerOficialVO toVO= null;
	    Proveedor prov = null;
	    ProveedorSRV daoProv = new ProveedorSRV();
	    
	    prov = daoProv.getProveedor(tarea.getProveedor());
	    
	    if (prov.esAgenteOficial()){
			agVO = ((AgenteOficialVO)prov.toVO());
			ag = (AgenteOficial) ag.toBusiness(agVO);
			devuelto.setProveedor(ag);
	    }
	    else if (prov.esTallerGeneral()){
			tgVO = (TallerGeneralVO) prov.toVO();
			tg = tg.toBusiness(tgVO);
			devuelto.setProveedor(tg);
	    } 
	    else if (prov.esTallerOficial()){
			toVO = (TallerOficialVO) prov.toVO();
			to = to.toBusiness(toVO);
			devuelto.setProveedor(to);
	    }
	    
	   devuelto.setFechaTarea(tarea.getFechaTarea());
	   devuelto.setDetalle(tarea.getDetalle());
	   devuelto.setKilometrajeMantenimiento(tarea.getKilometrajeMantenimiento());
	    
	    return devuelto;
	}

	public int getKilometrajeMantenimiento() {
		return kilometrajeMantenimiento;
	}

	public void setKilometrajeMantenimiento(int kilometrajeMantenimiento) {
		this.kilometrajeMantenimiento = kilometrajeMantenimiento;
	}
	
	public MantenimientoKilometrajeVO toVO() {
		MantenimientoKilometrajeVO tareaVO = new MantenimientoKilometrajeVO(getIdTareaMantenimiento(), getFechaTarea(), getDetalle(), getProveedor().getCuit(),
				getKilometrajeMantenimiento());
		return tareaVO;
	}
	
	@Override
	public boolean sosTareaKm() {
		return true;
	}

	@Override
	public boolean sosTareaTiempo() {
		return false;
	}
}
